Face Generation

In this project, you'll use generative adversarial networks to generate new images of faces.

Get the Data

You'll be using two datasets in this project:

  • MNIST
  • CelebA

Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.

If you're using FloydHub, set data_dir to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".

In [1]:
!ls -al /input
total 8308
drwxr-xr-x   4 root root    6144 Apr 29 00:27 .
drwxr-xr-x 138 root root    4096 Aug 16 15:51 ..
drwxr-xr-x   2 root root 6137856 Apr 28 19:01 img_align_celeba
drwxr-xr-x   2 root root 2365440 Apr 28 18:57 mnist
In [2]:
data_dir = '/input'

# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'


"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper

helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
Found mnist Data
Found celeba Data

Explore the Data

MNIST

As you're aware, the MNIST dataset contains images of handwritten digits. You can view the first number of examples by changing show_n_images.

In [3]:
show_n_images = 25

"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot

mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
Out[3]:
<matplotlib.image.AxesImage at 0x7f8ff02ac668>

CelebA

The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images.

In [4]:
show_n_images = 25

"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Out[4]:
<matplotlib.image.AxesImage at 0x7f8ff0229748>

Preprocess the Data

Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

The MNIST images are black and white images with a single color channel while the CelebA images have 3 color channels (RGB color channel).

Build the Neural Network

You'll build the components necessary to build a GANs by implementing the following functions below:

  • model_inputs
  • discriminator
  • generator
  • model_loss
  • model_opt
  • train

Check the Version of TensorFlow and Access to GPU

This will check to make sure you have the correct version of TensorFlow and access to a GPU

In [5]:
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf

# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer.  You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))

# Check for a GPU
if not tf.test.gpu_device_name():
    warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
TensorFlow Version: 1.1.0
Default GPU Device: /gpu:0

Input

Implement the model_inputs function to create TF Placeholders for the Neural Network. It should create the following placeholders:

  • Real input images placeholder with rank 4 using image_width, image_height, and image_channels.
  • Z input placeholder with rank 2 using z_dim.
  • Learning rate placeholder with rank 0.

Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)

In [6]:
import problem_unittests as tests

def model_inputs(image_width, image_height, image_channels, z_dim):
    """
    Create the model inputs
    :param image_width: The input image width
    :param image_height: The input image height
    :param image_channels: The number of image channels
    :param z_dim: The dimension of Z
    :return: Tuple of (tensor of real input images, tensor of z data, learning rate)
    """
    
    real_inputs = tf.placeholder(
        tf.float32, 
        (None, image_height, image_width, image_channels),
        name='real_inputs'
    )
    z_inputs = tf.placeholder(tf.float32, (None, z_dim), name='z_inputs')
    lrate = tf.placeholder(tf.float32, name='lrate')
    return real_inputs, z_inputs, lrate


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
Tests Passed

Discriminator

Implement discriminator to create a discriminator neural network that discriminates on images. This function should be able to reuse the variables in the neural network. Use tf.variable_scope with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the discriminator, tensor logits of the discriminator).

In [33]:
def discriminator(images, reuse=False, alpha=0.2, kernel=5, filters=32):
    """
    Create the discriminator network
    :param images: Tensor of input image(s)
    :param reuse: Boolean if the weights should be reused
    :return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
    """
    # Input layer is 28x28x3
    with tf.variable_scope('discriminator', reuse=reuse):
        x1 = tf.layers.conv2d(images, filters, kernel, strides=2, padding='same')
        relu1 = tf.maximum(alpha * x1, x1)
        # 14x14x32
        
        x2 = tf.layers.conv2d(x1, filters*2, kernel, strides=2, padding='same')
        bn2 = tf.layers.batch_normalization(x2, training=True)
        relu2 = tf.maximum(alpha * bn2, bn2)
        # 7x7x64
        
        x3 = tf.layers.conv2d(x2, filters*2, kernel, strides=1, padding='same')
        bn3 = tf.layers.batch_normalization(x3, training=True)
        relu3 = tf.maximum(alpha * bn3, bn3)
        
        flat = tf.reshape(relu3, (-1, 7*7*filters*2))
        logits = tf.layers.dense(flat, 1)
        out = tf.sigmoid(logits)

    return out, logits


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Tests Passed

Generator

Implement generator to generate an image using z. This function should be able to reuse the variables in the neural network. Use tf.variable_scope with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim images.

In [48]:
def generator(z, out_channel_dim, is_train=True, alpha=0.2, kernel=5):
    """
    Create the generator network
    :param z: Input z
    :param out_channel_dim: The number of channels in the output image
    :param is_train: Boolean if generator is being used for training
    :return: The tensor output of the generator
    """
    with tf.variable_scope('generator', reuse=not is_train):
        x1 = tf.layers.dense(z, 7*7*512)
        
        x1 = tf.reshape(x1, (-1, 7, 7, 512))
        x1 = tf.layers.batch_normalization(x1, training=is_train)
        x1 = tf.maximum(alpha * x1, x1)
        # 7x7x512
        
        x2 = tf.layers.conv2d_transpose(x1, 256, kernel, strides=2, padding='same')
        x2 = tf.layers.batch_normalization(x2, training=is_train)
        x2 = tf.maximum(alpha * x2, x2)
        # 14x14x256
        
        x3 = tf.layers.conv2d_transpose(x2, 128, kernel, strides=2, padding='same')
        x3 = tf.layers.batch_normalization(x3, training=is_train)
        x3 = tf.maximum(alpha * x3, x3)
        # 14x14x128
        
        logits = tf.layers.conv2d_transpose(
            x3, out_channel_dim, kernel, strides=1, padding='same')
        # 28x28x3
        
        out = tf.tanh(logits)
    return out


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Tests Passed

Loss

Implement model_loss to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:

  • discriminator(images, reuse=False)
  • generator(z, out_channel_dim, is_train=True)
In [42]:
def model_loss(input_real, input_z, out_channel_dim):
    """
    Get the loss for the discriminator and generator
    :param input_real: Images from the real dataset
    :param input_z: Z input
    :param out_channel_dim: The number of channels in the output image
    :return: A tuple of (discriminator loss, generator loss)
    """
    gen_model = generator(input_z, out_channel_dim)
    d_model_real, d_logits_real = discriminator(input_real)
    d_model_fake, d_logits_fake = discriminator(gen_model, reuse=True)
    
    ones_like_real = tf.ones_like(d_model_real)
    one_sided_smooth_labels = tf.multiply(
        ones_like_real,
        tf.random_uniform((1,), minval=0.8, maxval=1.2)
    )

    
    d_loss_real = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_real, labels=one_sided_smooth_labels
        )
    )
    d_loss_fake = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_fake, labels=tf.zeros_like(d_model_fake)
        )
    )
    g_loss = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_fake, labels=tf.ones_like(d_model_fake)
        )
    )
    d_loss = d_loss_real + d_loss_fake
    
    return d_loss, g_loss


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Tests Passed

Optimization

Implement model_opt to create the optimization operations for the GANs. Use tf.trainable_variables to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).

In [43]:
def model_opt(d_loss, g_loss, learning_rate, beta1):
    """
    Get optimization operations
    :param d_loss: Discriminator loss Tensor
    :param g_loss: Generator loss Tensor
    :param learning_rate: Learning Rate Placeholder
    :param beta1: The exponential decay rate for the 1st moment in the optimizer
    :return: A tuple of (discriminator training operation, generator training operation)
    """
    # Get weights and bias to update
    t_vars = tf.trainable_variables()
    d_vars = [var for var in t_vars if var.name.startswith('discriminator')]
    g_vars = [var for var in t_vars if var.name.startswith('generator')]

    # Optimize
    with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
        d_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(d_loss, var_list=d_vars)
        g_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(g_loss, var_list=g_vars)

    return d_train_opt, g_train_opt


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
Tests Passed

Neural Network Training

Show Output

Use this function to show the current output of the generator during training. It will help you determine how well the GANs is training.

In [44]:
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np

def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
    """
    Show example output for the generator
    :param sess: TensorFlow session
    :param n_images: Number of Images to display
    :param input_z: Input Z Tensor
    :param out_channel_dim: The number of channels in the output image
    :param image_mode: The mode to use for images ("RGB" or "L")
    """
    cmap = None if image_mode == 'RGB' else 'gray'
    z_dim = input_z.get_shape().as_list()[-1]
    example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])

    samples = sess.run(
        generator(input_z, out_channel_dim, False),
        feed_dict={input_z: example_z})

    images_grid = helper.images_square_grid(samples, image_mode)
    pyplot.imshow(images_grid, cmap=cmap)
    pyplot.show()

Train

Implement train to build and train the GANs. Use the following functions you implemented:

  • model_inputs(image_width, image_height, image_channels, z_dim)
  • model_loss(input_real, input_z, out_channel_dim)
  • model_opt(d_loss, g_loss, learning_rate, beta1)

Use the show_generator_output to show generator output while you train. Running show_generator_output for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator output every 100 batches.

In [45]:
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
    """
    Train the GAN
    :param epoch_count: Number of epochs
    :param batch_size: Batch Size
    :param z_dim: Z dimension
    :param learning_rate: Learning Rate
    :param beta1: The exponential decay rate for the 1st moment in the optimizer
    :param get_batches: Function to get batches
    :param data_shape: Shape of the data
    :param data_image_mode: The image mode to use for images ("RGB" or "L")
    """
    steps=0
    
    # TODO: Build Model
    image_channels = 3 if data_image_mode == 'RGB' else 1
    image_height, image_width = data_shape[1], data_shape[2]
    real_inputs, z_inputs, lrate = model_inputs(
        image_width, image_height, image_channels, z_dim)
        
    d_loss, g_loss = model_loss(real_inputs, z_inputs, image_channels)
    
    d_opt, g_opt = model_opt(d_loss, g_loss, lrate, beta1)
        
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for epoch_i in range(epoch_count):
            for batch_images in get_batches(batch_size):
                
                steps += 1
                batch_images = 2 * batch_images
                
                batch_z = np.random.uniform(-1 ,1, size=(batch_size, z_dim))
                
                _ = sess.run(d_opt, feed_dict={
                    real_inputs: batch_images,
                    z_inputs: batch_z,
                    lrate: learning_rate
                })
                
                # Double the number of trains to generator
                _ = sess.run(g_opt, feed_dict={
                    z_inputs: batch_z,
                    real_inputs: batch_images,
                    lrate: learning_rate
                })
                
                
                if steps % 10 == 0:
                    # At the end of every 10 epochs, get the losses and print them out
                    train_loss_d = d_loss.eval({z_inputs: batch_z, real_inputs: batch_images})
                    train_loss_g = g_loss.eval({z_inputs: batch_z})

                    print("Epoch {}/{}...".format(epoch_i+1, epochs),
                          "Discriminator Loss: {:.4f}...".format(train_loss_d),
                          "Generator Loss: {:.4f}".format(train_loss_g),
                          "Sum Loss: {:.4f}".format(train_loss_g+train_loss_d))
                
                if steps % 100 == 0:
                    show_generator_output(
                        sess,
                        25,
                        z_inputs,
                        image_channels,
                        data_image_mode
                    )
                  
        show_generator_output(sess, 25, z_inputs, image_channels, data_image_mode)

                
                

MNIST

Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.

In [ ]:
 
In [ ]:
batch_size = 64
z_dim = 100
learning_rate = 0.0002
beta1 = 0.5


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 2

mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
with tf.Graph().as_default():
    train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
          mnist_dataset.shape, mnist_dataset.image_mode)
Epoch 1/2... Discriminator Loss: 0.5988... Generator Loss: 1.8453 Sum Loss: 2.4440
Epoch 1/2... Discriminator Loss: 0.6492... Generator Loss: 0.9504 Sum Loss: 1.5996
Epoch 1/2... Discriminator Loss: 0.3639... Generator Loss: 1.3632 Sum Loss: 1.7271
Epoch 1/2... Discriminator Loss: -0.0759... Generator Loss: 2.8590 Sum Loss: 2.7831
Epoch 1/2... Discriminator Loss: 0.2372... Generator Loss: 2.0653 Sum Loss: 2.3025
Epoch 1/2... Discriminator Loss: -0.6782... Generator Loss: 2.9192 Sum Loss: 2.2411
Epoch 1/2... Discriminator Loss: 0.0751... Generator Loss: 3.5731 Sum Loss: 3.6481
Epoch 1/2... Discriminator Loss: 0.8306... Generator Loss: 1.2316 Sum Loss: 2.0622
Epoch 1/2... Discriminator Loss: 0.3368... Generator Loss: 1.1853 Sum Loss: 1.5222
Epoch 1/2... Discriminator Loss: 0.4919... Generator Loss: 4.4140 Sum Loss: 4.9060
Epoch 1/2... Discriminator Loss: -0.5789... Generator Loss: 4.7186 Sum Loss: 4.1397
Epoch 1/2... Discriminator Loss: 0.1641... Generator Loss: 3.7323 Sum Loss: 3.8963
Epoch 1/2... Discriminator Loss: -0.3278... Generator Loss: 2.3242 Sum Loss: 1.9964
Epoch 1/2... Discriminator Loss: 1.0438... Generator Loss: 0.7343 Sum Loss: 1.7781
Epoch 1/2... Discriminator Loss: 0.7726... Generator Loss: 3.1961 Sum Loss: 3.9687
Epoch 1/2... Discriminator Loss: -0.4386... Generator Loss: 4.1434 Sum Loss: 3.7048
Epoch 1/2... Discriminator Loss: 0.6079... Generator Loss: 4.7426 Sum Loss: 5.3506
Epoch 1/2... Discriminator Loss: 0.9265... Generator Loss: 3.6101 Sum Loss: 4.5366
Epoch 1/2... Discriminator Loss: -0.3059... Generator Loss: 5.3369 Sum Loss: 5.0310
Epoch 1/2... Discriminator Loss: 0.5948... Generator Loss: 4.2735 Sum Loss: 4.8683
Epoch 1/2... Discriminator Loss: -0.1028... Generator Loss: 4.4103 Sum Loss: 4.3075
Epoch 1/2... Discriminator Loss: 0.9891... Generator Loss: 4.5316 Sum Loss: 5.5207
Epoch 1/2... Discriminator Loss: 1.4119... Generator Loss: 4.5890 Sum Loss: 6.0009
Epoch 1/2... Discriminator Loss: -0.1222... Generator Loss: 2.4930 Sum Loss: 2.3708
Epoch 1/2... Discriminator Loss: 0.1280... Generator Loss: 1.6966 Sum Loss: 1.8246
Epoch 1/2... Discriminator Loss: -0.1538... Generator Loss: 2.2749 Sum Loss: 2.1212
Epoch 1/2... Discriminator Loss: -0.1868... Generator Loss: 3.7159 Sum Loss: 3.5292
Epoch 1/2... Discriminator Loss: 0.6661... Generator Loss: 1.0456 Sum Loss: 1.7117
Epoch 1/2... Discriminator Loss: 1.0916... Generator Loss: 1.0123 Sum Loss: 2.1039
Epoch 1/2... Discriminator Loss: 1.1098... Generator Loss: 0.9629 Sum Loss: 2.0728
Epoch 1/2... Discriminator Loss: 0.8486... Generator Loss: 1.3326 Sum Loss: 2.1812
Epoch 1/2... Discriminator Loss: 1.1338... Generator Loss: 0.8087 Sum Loss: 1.9425
Epoch 1/2... Discriminator Loss: 1.1180... Generator Loss: 0.7011 Sum Loss: 1.8190
Epoch 1/2... Discriminator Loss: 1.1470... Generator Loss: 0.7114 Sum Loss: 1.8584
Epoch 1/2... Discriminator Loss: 0.9996... Generator Loss: 1.0196 Sum Loss: 2.0193
Epoch 1/2... Discriminator Loss: 1.5613... Generator Loss: 0.4318 Sum Loss: 1.9931
Epoch 1/2... Discriminator Loss: 1.2354... Generator Loss: 0.6744 Sum Loss: 1.9098
Epoch 1/2... Discriminator Loss: 1.2205... Generator Loss: 1.2734 Sum Loss: 2.4939
Epoch 1/2... Discriminator Loss: 1.3433... Generator Loss: 0.5066 Sum Loss: 1.8499
Epoch 1/2... Discriminator Loss: 1.2150... Generator Loss: 0.6807 Sum Loss: 1.8957
Epoch 1/2... Discriminator Loss: 1.1339... Generator Loss: 0.7389 Sum Loss: 1.8728
Epoch 1/2... Discriminator Loss: 1.2902... Generator Loss: 0.7360 Sum Loss: 2.0262
Epoch 1/2... Discriminator Loss: 1.3417... Generator Loss: 0.7340 Sum Loss: 2.0757
Epoch 1/2... Discriminator Loss: 1.5022... Generator Loss: 0.4968 Sum Loss: 1.9990
Epoch 1/2... Discriminator Loss: 1.2333... Generator Loss: 0.4995 Sum Loss: 1.7328
Epoch 1/2... Discriminator Loss: 0.8529... Generator Loss: 1.9181 Sum Loss: 2.7710
Epoch 1/2... Discriminator Loss: 0.9409... Generator Loss: 0.8264 Sum Loss: 1.7673
Epoch 1/2... Discriminator Loss: 1.3196... Generator Loss: 0.9715 Sum Loss: 2.2911
Epoch 1/2... Discriminator Loss: 0.6694... Generator Loss: 1.1325 Sum Loss: 1.8019
Epoch 1/2... Discriminator Loss: 1.0799... Generator Loss: 0.6766 Sum Loss: 1.7565
Epoch 1/2... Discriminator Loss: 1.0527... Generator Loss: 1.4419 Sum Loss: 2.4946
Epoch 1/2... Discriminator Loss: 1.3534... Generator Loss: 0.6520 Sum Loss: 2.0053
Epoch 1/2... Discriminator Loss: 1.3528... Generator Loss: 0.5986 Sum Loss: 1.9514
Epoch 1/2... Discriminator Loss: 1.0352... Generator Loss: 0.7019 Sum Loss: 1.7371
Epoch 1/2... Discriminator Loss: 1.2587... Generator Loss: 0.6117 Sum Loss: 1.8704
Epoch 1/2... Discriminator Loss: 1.5210... Generator Loss: 0.5145 Sum Loss: 2.0355
Epoch 1/2... Discriminator Loss: 1.1535... Generator Loss: 0.5896 Sum Loss: 1.7432
Epoch 1/2... Discriminator Loss: 0.9120... Generator Loss: 1.4252 Sum Loss: 2.3373
Epoch 1/2... Discriminator Loss: 1.0973... Generator Loss: 0.8757 Sum Loss: 1.9730
Epoch 1/2... Discriminator Loss: 1.2842... Generator Loss: 0.3839 Sum Loss: 1.6681
Epoch 1/2... Discriminator Loss: 0.6994... Generator Loss: 1.6981 Sum Loss: 2.3976
Epoch 1/2... Discriminator Loss: 1.4238... Generator Loss: 0.5367 Sum Loss: 1.9605
Epoch 1/2... Discriminator Loss: 1.0031... Generator Loss: 1.2838 Sum Loss: 2.2869
Epoch 1/2... Discriminator Loss: 1.5958... Generator Loss: 0.4840 Sum Loss: 2.0797
Epoch 1/2... Discriminator Loss: 1.3068... Generator Loss: 1.0160 Sum Loss: 2.3228
Epoch 1/2... Discriminator Loss: 1.1308... Generator Loss: 1.1742 Sum Loss: 2.3050
Epoch 1/2... Discriminator Loss: 1.5315... Generator Loss: 0.6250 Sum Loss: 2.1564
Epoch 1/2... Discriminator Loss: 1.4839... Generator Loss: 0.4207 Sum Loss: 1.9046
Epoch 1/2... Discriminator Loss: 1.1104... Generator Loss: 1.1783 Sum Loss: 2.2887
Epoch 1/2... Discriminator Loss: 1.6352... Generator Loss: 0.6581 Sum Loss: 2.2933
Epoch 1/2... Discriminator Loss: 1.2993... Generator Loss: 0.7753 Sum Loss: 2.0746
Epoch 1/2... Discriminator Loss: 1.6096... Generator Loss: 0.5942 Sum Loss: 2.2039
Epoch 1/2... Discriminator Loss: 1.5131... Generator Loss: 0.6732 Sum Loss: 2.1864
Epoch 1/2... Discriminator Loss: 1.4912... Generator Loss: 0.5501 Sum Loss: 2.0413
Epoch 1/2... Discriminator Loss: 1.5525... Generator Loss: 0.5524 Sum Loss: 2.1049
Epoch 1/2... Discriminator Loss: 1.5515... Generator Loss: 0.5987 Sum Loss: 2.1501
Epoch 1/2... Discriminator Loss: 1.7592... Generator Loss: 0.7693 Sum Loss: 2.5285
Epoch 1/2... Discriminator Loss: 1.5947... Generator Loss: 0.5420 Sum Loss: 2.1367
Epoch 1/2... Discriminator Loss: 1.2919... Generator Loss: 0.5812 Sum Loss: 1.8731
Epoch 1/2... Discriminator Loss: 1.4000... Generator Loss: 0.4375 Sum Loss: 1.8375
Epoch 1/2... Discriminator Loss: 1.5311... Generator Loss: 0.5119 Sum Loss: 2.0430
Epoch 1/2... Discriminator Loss: 1.3958... Generator Loss: 0.5541 Sum Loss: 1.9499
Epoch 1/2... Discriminator Loss: 1.4782... Generator Loss: 0.7102 Sum Loss: 2.1884
Epoch 1/2... Discriminator Loss: 1.3894... Generator Loss: 0.6043 Sum Loss: 1.9937
Epoch 1/2... Discriminator Loss: 1.4681... Generator Loss: 0.6671 Sum Loss: 2.1352
Epoch 1/2... Discriminator Loss: 1.5517... Generator Loss: 0.4563 Sum Loss: 2.0080
Epoch 1/2... Discriminator Loss: 1.4000... Generator Loss: 1.0265 Sum Loss: 2.4265
Epoch 1/2... Discriminator Loss: 1.4383... Generator Loss: 0.8856 Sum Loss: 2.3238
Epoch 1/2... Discriminator Loss: 1.4114... Generator Loss: 0.6246 Sum Loss: 2.0360
Epoch 1/2... Discriminator Loss: 1.3464... Generator Loss: 0.6648 Sum Loss: 2.0112
Epoch 1/2... Discriminator Loss: 1.4544... Generator Loss: 0.7754 Sum Loss: 2.2298
Epoch 1/2... Discriminator Loss: 1.3830... Generator Loss: 0.6440 Sum Loss: 2.0270
Epoch 1/2... Discriminator Loss: 1.4886... Generator Loss: 0.4681 Sum Loss: 1.9568
Epoch 2/2... Discriminator Loss: 1.4574... Generator Loss: 0.6631 Sum Loss: 2.1206
Epoch 2/2... Discriminator Loss: 1.5490... Generator Loss: 0.4465 Sum Loss: 1.9955
Epoch 2/2... Discriminator Loss: 1.3195... Generator Loss: 0.7630 Sum Loss: 2.0825
Epoch 2/2... Discriminator Loss: 1.4298... Generator Loss: 0.6238 Sum Loss: 2.0536
Epoch 2/2... Discriminator Loss: 1.3640... Generator Loss: 0.6764 Sum Loss: 2.0403
Epoch 2/2... Discriminator Loss: 1.5021... Generator Loss: 0.5431 Sum Loss: 2.0452
Epoch 2/2... Discriminator Loss: 1.3506... Generator Loss: 0.6966 Sum Loss: 2.0473
Epoch 2/2... Discriminator Loss: 1.5380... Generator Loss: 0.9436 Sum Loss: 2.4816
Epoch 2/2... Discriminator Loss: 1.3234... Generator Loss: 0.8537 Sum Loss: 2.1771
Epoch 2/2... Discriminator Loss: 1.3838... Generator Loss: 0.7435 Sum Loss: 2.1273
Epoch 2/2... Discriminator Loss: 1.4092... Generator Loss: 0.7570 Sum Loss: 2.1662
Epoch 2/2... Discriminator Loss: 1.4147... Generator Loss: 0.7903 Sum Loss: 2.2049
Epoch 2/2... Discriminator Loss: 1.4361... Generator Loss: 0.7353 Sum Loss: 2.1713
Epoch 2/2... Discriminator Loss: 1.3719... Generator Loss: 0.8022 Sum Loss: 2.1741
Epoch 2/2... Discriminator Loss: 1.4689... Generator Loss: 0.8564 Sum Loss: 2.3252
Epoch 2/2... Discriminator Loss: 1.3334... Generator Loss: 0.7303 Sum Loss: 2.0637
Epoch 2/2... Discriminator Loss: 1.4717... Generator Loss: 0.8612 Sum Loss: 2.3330
Epoch 2/2... Discriminator Loss: 1.3751... Generator Loss: 0.6172 Sum Loss: 1.9922
Epoch 2/2... Discriminator Loss: 1.3404... Generator Loss: 0.6255 Sum Loss: 1.9659
Epoch 2/2... Discriminator Loss: 1.5273... Generator Loss: 0.5088 Sum Loss: 2.0361
Epoch 2/2... Discriminator Loss: 1.3502... Generator Loss: 0.6557 Sum Loss: 2.0060
Epoch 2/2... Discriminator Loss: 1.4016... Generator Loss: 0.9878 Sum Loss: 2.3894
Epoch 2/2... Discriminator Loss: 1.4353... Generator Loss: 0.7891 Sum Loss: 2.2244
Epoch 2/2... Discriminator Loss: 1.4659... Generator Loss: 0.5530 Sum Loss: 2.0189
Epoch 2/2... Discriminator Loss: 1.3577... Generator Loss: 0.8275 Sum Loss: 2.1852
Epoch 2/2... Discriminator Loss: 1.3864... Generator Loss: 0.8020 Sum Loss: 2.1883
Epoch 2/2... Discriminator Loss: 1.3321... Generator Loss: 0.5199 Sum Loss: 1.8520
Epoch 2/2... Discriminator Loss: 1.3641... Generator Loss: 0.7253 Sum Loss: 2.0894
Epoch 2/2... Discriminator Loss: 1.4070... Generator Loss: 0.6547 Sum Loss: 2.0617
Epoch 2/2... Discriminator Loss: 1.5288... Generator Loss: 0.5071 Sum Loss: 2.0360
Epoch 2/2... Discriminator Loss: 1.3639... Generator Loss: 0.6752 Sum Loss: 2.0391
Epoch 2/2... Discriminator Loss: 1.4205... Generator Loss: 0.7663 Sum Loss: 2.1868
Epoch 2/2... Discriminator Loss: 1.3938... Generator Loss: 0.7543 Sum Loss: 2.1480
Epoch 2/2... Discriminator Loss: 1.3811... Generator Loss: 0.6034 Sum Loss: 1.9846
Epoch 2/2... Discriminator Loss: 1.4231... Generator Loss: 0.7268 Sum Loss: 2.1499
Epoch 2/2... Discriminator Loss: 1.3288... Generator Loss: 0.8356 Sum Loss: 2.1644
Epoch 2/2... Discriminator Loss: 1.4062... Generator Loss: 0.7678 Sum Loss: 2.1740
Epoch 2/2... Discriminator Loss: 1.3280... Generator Loss: 0.7787 Sum Loss: 2.1068
Epoch 2/2... Discriminator Loss: 1.3893... Generator Loss: 0.7162 Sum Loss: 2.1055
Epoch 2/2... Discriminator Loss: 1.3701... Generator Loss: 0.6964 Sum Loss: 2.0665
Epoch 2/2... Discriminator Loss: 1.4028... Generator Loss: 0.8126 Sum Loss: 2.2155
Epoch 2/2... Discriminator Loss: 1.3377... Generator Loss: 0.5138 Sum Loss: 1.8516
Epoch 2/2... Discriminator Loss: 1.3813... Generator Loss: 0.6739 Sum Loss: 2.0553
Epoch 2/2... Discriminator Loss: 1.4078... Generator Loss: 0.6992 Sum Loss: 2.1070
Epoch 2/2... Discriminator Loss: 1.4653... Generator Loss: 0.5942 Sum Loss: 2.0594
Epoch 2/2... Discriminator Loss: 1.3972... Generator Loss: 0.6214 Sum Loss: 2.0186
Epoch 2/2... Discriminator Loss: 1.4827... Generator Loss: 0.8800 Sum Loss: 2.3626
Epoch 2/2... Discriminator Loss: 1.4459... Generator Loss: 0.6576 Sum Loss: 2.1036
Epoch 2/2... Discriminator Loss: 1.2994... Generator Loss: 0.7289 Sum Loss: 2.0282
Epoch 2/2... Discriminator Loss: 1.3807... Generator Loss: 0.6974 Sum Loss: 2.0781
Epoch 2/2... Discriminator Loss: 1.3656... Generator Loss: 0.5463 Sum Loss: 1.9119
Epoch 2/2... Discriminator Loss: 1.3468... Generator Loss: 0.5879 Sum Loss: 1.9347
Epoch 2/2... Discriminator Loss: 1.4660... Generator Loss: 0.4935 Sum Loss: 1.9595
Epoch 2/2... Discriminator Loss: 1.3894... Generator Loss: 0.6868 Sum Loss: 2.0762
Epoch 2/2... Discriminator Loss: 1.4904... Generator Loss: 0.5145 Sum Loss: 2.0049
Epoch 2/2... Discriminator Loss: 1.3976... Generator Loss: 0.7697 Sum Loss: 2.1673
Epoch 2/2... Discriminator Loss: 1.3171... Generator Loss: 0.6946 Sum Loss: 2.0117
Epoch 2/2... Discriminator Loss: 1.4201... Generator Loss: 0.5885 Sum Loss: 2.0086
Epoch 2/2... Discriminator Loss: 1.3713... Generator Loss: 0.7946 Sum Loss: 2.1659
Epoch 2/2... Discriminator Loss: 1.3395... Generator Loss: 0.6390 Sum Loss: 1.9784
Epoch 2/2... Discriminator Loss: 1.4358... Generator Loss: 0.5620 Sum Loss: 1.9978
Epoch 2/2... Discriminator Loss: 1.3373... Generator Loss: 0.6463 Sum Loss: 1.9836
Epoch 2/2... Discriminator Loss: 1.4555... Generator Loss: 0.8542 Sum Loss: 2.3097
Epoch 2/2... Discriminator Loss: 1.4569... Generator Loss: 0.5200 Sum Loss: 1.9768
Epoch 2/2... Discriminator Loss: 1.4153... Generator Loss: 0.6779 Sum Loss: 2.0933
Epoch 2/2... Discriminator Loss: 1.5182... Generator Loss: 0.8826 Sum Loss: 2.4007
Epoch 2/2... Discriminator Loss: 1.3181... Generator Loss: 0.8037 Sum Loss: 2.1219
Epoch 2/2... Discriminator Loss: 1.3705... Generator Loss: 0.7976 Sum Loss: 2.1682
Epoch 2/2... Discriminator Loss: 1.3850... Generator Loss: 0.8361 Sum Loss: 2.2211
Epoch 2/2... Discriminator Loss: 1.3675... Generator Loss: 0.6252 Sum Loss: 1.9927
Epoch 2/2... Discriminator Loss: 1.4569... Generator Loss: 0.5060 Sum Loss: 1.9629
Epoch 2/2... Discriminator Loss: 1.4161... Generator Loss: 0.6134 Sum Loss: 2.0295
Epoch 2/2... Discriminator Loss: 1.3323... Generator Loss: 0.5959 Sum Loss: 1.9282
Epoch 2/2... Discriminator Loss: 1.3295... Generator Loss: 0.7132 Sum Loss: 2.0427
Epoch 2/2... Discriminator Loss: 1.3734... Generator Loss: 0.8217 Sum Loss: 2.1951
Epoch 2/2... Discriminator Loss: 1.4995... Generator Loss: 0.8383 Sum Loss: 2.3378
Epoch 2/2... Discriminator Loss: 1.3382... Generator Loss: 0.7009 Sum Loss: 2.0391
Epoch 2/2... Discriminator Loss: 1.4137... Generator Loss: 0.7829 Sum Loss: 2.1966
Epoch 2/2... Discriminator Loss: 1.4451... Generator Loss: 0.5678 Sum Loss: 2.0129
Epoch 2/2... Discriminator Loss: 1.4002... Generator Loss: 0.6176 Sum Loss: 2.0177
Epoch 2/2... Discriminator Loss: 1.3759... Generator Loss: 0.7712 Sum Loss: 2.1471
Epoch 2/2... Discriminator Loss: 1.4113... Generator Loss: 0.6673 Sum Loss: 2.0785
Epoch 2/2... Discriminator Loss: 1.3675... Generator Loss: 0.5551 Sum Loss: 1.9227
Epoch 2/2... Discriminator Loss: 1.3443... Generator Loss: 0.6061 Sum Loss: 1.9503
Epoch 2/2... Discriminator Loss: 1.4654... Generator Loss: 0.8505 Sum Loss: 2.3158
Epoch 2/2... Discriminator Loss: 1.4179... Generator Loss: 0.5535 Sum Loss: 1.9713
Epoch 2/2... Discriminator Loss: 1.3014... Generator Loss: 0.5833 Sum Loss: 1.8847
Epoch 2/2... Discriminator Loss: 1.3667... Generator Loss: 0.7022 Sum Loss: 2.0689
Epoch 2/2... Discriminator Loss: 1.4263... Generator Loss: 0.7805 Sum Loss: 2.2068
Epoch 2/2... Discriminator Loss: 1.4165... Generator Loss: 0.5591 Sum Loss: 1.9757
Epoch 2/2... Discriminator Loss: 1.3856... Generator Loss: 0.7843 Sum Loss: 2.1699
Epoch 2/2... Discriminator Loss: 1.4223... Generator Loss: 0.6500 Sum Loss: 2.0723
Epoch 2/2... Discriminator Loss: 1.3747... Generator Loss: 0.4851 Sum Loss: 1.8598
Epoch 2/2... Discriminator Loss: 1.4365... Generator Loss: 0.7021 Sum Loss: 2.1386

CelebA

Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.

In [ ]:
batch_size = 64
z_dim = 100
learning_rate = 0.0002
beta1 = 0.5


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1

celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
    train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
          celeba_dataset.shape, celeba_dataset.image_mode)
Epoch 1/1... Discriminator Loss: 5.8403... Generator Loss: 0.0036 Sum Loss: 5.8439
Epoch 1/1... Discriminator Loss: 3.7261... Generator Loss: 0.0286 Sum Loss: 3.7548
Epoch 1/1... Discriminator Loss: 1.7377... Generator Loss: 0.2366 Sum Loss: 1.9743
Epoch 1/1... Discriminator Loss: 2.7662... Generator Loss: 0.1137 Sum Loss: 2.8799
Epoch 1/1... Discriminator Loss: 1.4853... Generator Loss: 0.4523 Sum Loss: 1.9377
Epoch 1/1... Discriminator Loss: 1.6206... Generator Loss: 0.6054 Sum Loss: 2.2259
Epoch 1/1... Discriminator Loss: 1.7719... Generator Loss: 0.4807 Sum Loss: 2.2526
Epoch 1/1... Discriminator Loss: 1.5025... Generator Loss: 0.6479 Sum Loss: 2.1504
Epoch 1/1... Discriminator Loss: 1.1749... Generator Loss: 0.9750 Sum Loss: 2.1499
Epoch 1/1... Discriminator Loss: 1.8588... Generator Loss: 0.3943 Sum Loss: 2.2531
Epoch 1/1... Discriminator Loss: 1.8935... Generator Loss: 0.4524 Sum Loss: 2.3459
Epoch 1/1... Discriminator Loss: 1.8309... Generator Loss: 0.4443 Sum Loss: 2.2751
Epoch 1/1... Discriminator Loss: 1.3872... Generator Loss: 0.5659 Sum Loss: 1.9531
Epoch 1/1... Discriminator Loss: 1.5714... Generator Loss: 0.6038 Sum Loss: 2.1752
Epoch 1/1... Discriminator Loss: 1.1174... Generator Loss: 0.9254 Sum Loss: 2.0428
Epoch 1/1... Discriminator Loss: 0.9414... Generator Loss: 0.8426 Sum Loss: 1.7840
Epoch 1/1... Discriminator Loss: 1.4870... Generator Loss: 0.6694 Sum Loss: 2.1564
Epoch 1/1... Discriminator Loss: 1.6344... Generator Loss: 0.6547 Sum Loss: 2.2891
Epoch 1/1... Discriminator Loss: 1.6405... Generator Loss: 0.5133 Sum Loss: 2.1538
Epoch 1/1... Discriminator Loss: 1.4679... Generator Loss: 0.6160 Sum Loss: 2.0839
Epoch 1/1... Discriminator Loss: 0.8252... Generator Loss: 1.7254 Sum Loss: 2.5505
Epoch 1/1... Discriminator Loss: 1.4377... Generator Loss: 0.7553 Sum Loss: 2.1930
Epoch 1/1... Discriminator Loss: 1.1242... Generator Loss: 0.7871 Sum Loss: 1.9113
Epoch 1/1... Discriminator Loss: 0.8217... Generator Loss: 1.2513 Sum Loss: 2.0730
Epoch 1/1... Discriminator Loss: 0.7866... Generator Loss: 0.8754 Sum Loss: 1.6620
Epoch 1/1... Discriminator Loss: 0.9211... Generator Loss: 1.7342 Sum Loss: 2.6554
Epoch 1/1... Discriminator Loss: 0.8292... Generator Loss: 1.2798 Sum Loss: 2.1090
Epoch 1/1... Discriminator Loss: 1.3350... Generator Loss: 0.7632 Sum Loss: 2.0982
Epoch 1/1... Discriminator Loss: 0.5424... Generator Loss: 1.1806 Sum Loss: 1.7230
Epoch 1/1... Discriminator Loss: 0.7840... Generator Loss: 0.8279 Sum Loss: 1.6118
Epoch 1/1... Discriminator Loss: 1.1428... Generator Loss: 0.7031 Sum Loss: 1.8459
Epoch 1/1... Discriminator Loss: 0.3627... Generator Loss: 2.0315 Sum Loss: 2.3943
Epoch 1/1... Discriminator Loss: 0.2150... Generator Loss: 1.5753 Sum Loss: 1.7903
Epoch 1/1... Discriminator Loss: 0.4681... Generator Loss: 1.7001 Sum Loss: 2.1682
Epoch 1/1... Discriminator Loss: 0.8627... Generator Loss: 2.0168 Sum Loss: 2.8795
Epoch 1/1... Discriminator Loss: 0.5638... Generator Loss: 1.7425 Sum Loss: 2.3063
Epoch 1/1... Discriminator Loss: -0.0004... Generator Loss: 2.4496 Sum Loss: 2.4492
Epoch 1/1... Discriminator Loss: 0.5568... Generator Loss: 1.4416 Sum Loss: 1.9984
Epoch 1/1... Discriminator Loss: 1.3319... Generator Loss: 1.8714 Sum Loss: 3.2033
Epoch 1/1... Discriminator Loss: 1.2180... Generator Loss: 0.6775 Sum Loss: 1.8955
Epoch 1/1... Discriminator Loss: 0.7107... Generator Loss: 1.7972 Sum Loss: 2.5079
Epoch 1/1... Discriminator Loss: 1.0945... Generator Loss: 0.8770 Sum Loss: 1.9715
Epoch 1/1... Discriminator Loss: 1.8405... Generator Loss: 1.1212 Sum Loss: 2.9617
Epoch 1/1... Discriminator Loss: 0.7061... Generator Loss: 2.5088 Sum Loss: 3.2149
Epoch 1/1... Discriminator Loss: 1.6191... Generator Loss: 1.2351 Sum Loss: 2.8542
Epoch 1/1... Discriminator Loss: 1.6536... Generator Loss: 1.6968 Sum Loss: 3.3504
Epoch 1/1... Discriminator Loss: 0.7375... Generator Loss: 1.1377 Sum Loss: 1.8752
Epoch 1/1... Discriminator Loss: 1.2283... Generator Loss: 0.7570 Sum Loss: 1.9854
Epoch 1/1... Discriminator Loss: 1.5247... Generator Loss: 1.3247 Sum Loss: 2.8494
Epoch 1/1... Discriminator Loss: 1.5072... Generator Loss: 0.9476 Sum Loss: 2.4548
Epoch 1/1... Discriminator Loss: 1.2948... Generator Loss: 0.7088 Sum Loss: 2.0036
Epoch 1/1... Discriminator Loss: 0.8194... Generator Loss: 1.3667 Sum Loss: 2.1861
Epoch 1/1... Discriminator Loss: 0.5028... Generator Loss: 2.0592 Sum Loss: 2.5620
Epoch 1/1... Discriminator Loss: 1.6349... Generator Loss: 1.3133 Sum Loss: 2.9483
Epoch 1/1... Discriminator Loss: 0.7730... Generator Loss: 1.7705 Sum Loss: 2.5435
Epoch 1/1... Discriminator Loss: 1.2928... Generator Loss: 0.3791 Sum Loss: 1.6719
Epoch 1/1... Discriminator Loss: 0.8457... Generator Loss: 1.2113 Sum Loss: 2.0570
Epoch 1/1... Discriminator Loss: 1.1456... Generator Loss: 0.7715 Sum Loss: 1.9171
Epoch 1/1... Discriminator Loss: 1.2431... Generator Loss: 1.5299 Sum Loss: 2.7730
Epoch 1/1... Discriminator Loss: 1.3181... Generator Loss: 0.6343 Sum Loss: 1.9524
Epoch 1/1... Discriminator Loss: 0.8041... Generator Loss: 0.7742 Sum Loss: 1.5782
Epoch 1/1... Discriminator Loss: 1.9396... Generator Loss: 0.1972 Sum Loss: 2.1368
Epoch 1/1... Discriminator Loss: 1.1208... Generator Loss: 0.6307 Sum Loss: 1.7515
Epoch 1/1... Discriminator Loss: 0.8582... Generator Loss: 1.1541 Sum Loss: 2.0123
Epoch 1/1... Discriminator Loss: 1.4801... Generator Loss: 0.7950 Sum Loss: 2.2751
Epoch 1/1... Discriminator Loss: 1.4114... Generator Loss: 0.6376 Sum Loss: 2.0490
Epoch 1/1... Discriminator Loss: 0.8391... Generator Loss: 1.7186 Sum Loss: 2.5577
Epoch 1/1... Discriminator Loss: 0.9610... Generator Loss: 1.3585 Sum Loss: 2.3195
Epoch 1/1... Discriminator Loss: 1.0304... Generator Loss: 1.3300 Sum Loss: 2.3604
Epoch 1/1... Discriminator Loss: 1.1747... Generator Loss: 0.9822 Sum Loss: 2.1569
Epoch 1/1... Discriminator Loss: 1.0929... Generator Loss: 0.7456 Sum Loss: 1.8385
Epoch 1/1... Discriminator Loss: 1.1846... Generator Loss: 0.7457 Sum Loss: 1.9303
Epoch 1/1... Discriminator Loss: 1.5895... Generator Loss: 0.5035 Sum Loss: 2.0930
Epoch 1/1... Discriminator Loss: 1.6142... Generator Loss: 0.7608 Sum Loss: 2.3750
Epoch 1/1... Discriminator Loss: 1.4216... Generator Loss: 0.8851 Sum Loss: 2.3067
Epoch 1/1... Discriminator Loss: 1.4062... Generator Loss: 0.6988 Sum Loss: 2.1050
Epoch 1/1... Discriminator Loss: 0.7385... Generator Loss: 2.0466 Sum Loss: 2.7851
Epoch 1/1... Discriminator Loss: 1.2513... Generator Loss: 0.8204 Sum Loss: 2.0717
Epoch 1/1... Discriminator Loss: 1.6267... Generator Loss: 0.7430 Sum Loss: 2.3697
Epoch 1/1... Discriminator Loss: 1.3923... Generator Loss: 0.4146 Sum Loss: 1.8069
Epoch 1/1... Discriminator Loss: 0.9882... Generator Loss: 0.9581 Sum Loss: 1.9463
Epoch 1/1... Discriminator Loss: 1.3692... Generator Loss: 0.9052 Sum Loss: 2.2744
Epoch 1/1... Discriminator Loss: 1.2538... Generator Loss: 1.1361 Sum Loss: 2.3899
Epoch 1/1... Discriminator Loss: 1.5107... Generator Loss: 0.6904 Sum Loss: 2.2011
Epoch 1/1... Discriminator Loss: 1.6732... Generator Loss: 0.4898 Sum Loss: 2.1630
Epoch 1/1... Discriminator Loss: 1.3682... Generator Loss: 0.6901 Sum Loss: 2.0583
Epoch 1/1... Discriminator Loss: 1.6943... Generator Loss: 0.5144 Sum Loss: 2.2087
Epoch 1/1... Discriminator Loss: 1.3150... Generator Loss: 0.7424 Sum Loss: 2.0574
Epoch 1/1... Discriminator Loss: 1.0399... Generator Loss: 2.2221 Sum Loss: 3.2620
Epoch 1/1... Discriminator Loss: 1.4280... Generator Loss: 0.8715 Sum Loss: 2.2995
Epoch 1/1... Discriminator Loss: 1.5403... Generator Loss: 0.6030 Sum Loss: 2.1432
Epoch 1/1... Discriminator Loss: 1.5354... Generator Loss: 0.4848 Sum Loss: 2.0202
Epoch 1/1... Discriminator Loss: 1.4108... Generator Loss: 0.6101 Sum Loss: 2.0209
Epoch 1/1... Discriminator Loss: 1.4828... Generator Loss: 0.7662 Sum Loss: 2.2490
Epoch 1/1... Discriminator Loss: 1.5919... Generator Loss: 0.6454 Sum Loss: 2.2374
Epoch 1/1... Discriminator Loss: 1.2294... Generator Loss: 0.9429 Sum Loss: 2.1722
Epoch 1/1... Discriminator Loss: 1.5029... Generator Loss: 0.4469 Sum Loss: 1.9499
Epoch 1/1... Discriminator Loss: 1.5882... Generator Loss: 0.5171 Sum Loss: 2.1054
Epoch 1/1... Discriminator Loss: 1.4466... Generator Loss: 0.7624 Sum Loss: 2.2090
Epoch 1/1... Discriminator Loss: 1.4390... Generator Loss: 0.7954 Sum Loss: 2.2344
Epoch 1/1... Discriminator Loss: 1.5626... Generator Loss: 0.4209 Sum Loss: 1.9835
Epoch 1/1... Discriminator Loss: 1.4298... Generator Loss: 0.7313 Sum Loss: 2.1611
Epoch 1/1... Discriminator Loss: 1.5575... Generator Loss: 0.5103 Sum Loss: 2.0678
Epoch 1/1... Discriminator Loss: 1.2957... Generator Loss: 0.8753 Sum Loss: 2.1710
Epoch 1/1... Discriminator Loss: 1.2854... Generator Loss: 0.7988 Sum Loss: 2.0842
Epoch 1/1... Discriminator Loss: 1.5385... Generator Loss: 0.5309 Sum Loss: 2.0694
Epoch 1/1... Discriminator Loss: 1.5913... Generator Loss: 0.3946 Sum Loss: 1.9860
Epoch 1/1... Discriminator Loss: 1.5678... Generator Loss: 0.6279 Sum Loss: 2.1957
Epoch 1/1... Discriminator Loss: 1.7063... Generator Loss: 0.7933 Sum Loss: 2.4996
Epoch 1/1... Discriminator Loss: 1.4602... Generator Loss: 0.6779 Sum Loss: 2.1381
Epoch 1/1... Discriminator Loss: 1.1832... Generator Loss: 1.2270 Sum Loss: 2.4102
Epoch 1/1... Discriminator Loss: 1.4146... Generator Loss: 0.8269 Sum Loss: 2.2415
Epoch 1/1... Discriminator Loss: 1.4889... Generator Loss: 0.6571 Sum Loss: 2.1461
Epoch 1/1... Discriminator Loss: 1.4757... Generator Loss: 0.6473 Sum Loss: 2.1230
Epoch 1/1... Discriminator Loss: 1.4316... Generator Loss: 0.8607 Sum Loss: 2.2923
Epoch 1/1... Discriminator Loss: 1.4013... Generator Loss: 0.7803 Sum Loss: 2.1815
Epoch 1/1... Discriminator Loss: 1.4158... Generator Loss: 0.5391 Sum Loss: 1.9549
Epoch 1/1... Discriminator Loss: 1.3347... Generator Loss: 0.6433 Sum Loss: 1.9780
Epoch 1/1... Discriminator Loss: 1.4285... Generator Loss: 0.7887 Sum Loss: 2.2172
Epoch 1/1... Discriminator Loss: 1.5733... Generator Loss: 0.5498 Sum Loss: 2.1231
Epoch 1/1... Discriminator Loss: 1.5432... Generator Loss: 0.6770 Sum Loss: 2.2202
Epoch 1/1... Discriminator Loss: 1.5296... Generator Loss: 0.6692 Sum Loss: 2.1988
Epoch 1/1... Discriminator Loss: 1.4688... Generator Loss: 0.7868 Sum Loss: 2.2555
Epoch 1/1... Discriminator Loss: 1.4422... Generator Loss: 0.6479 Sum Loss: 2.0901
Epoch 1/1... Discriminator Loss: 1.4016... Generator Loss: 0.8416 Sum Loss: 2.2432
Epoch 1/1... Discriminator Loss: 1.2315... Generator Loss: 1.1152 Sum Loss: 2.3467
Epoch 1/1... Discriminator Loss: 1.4852... Generator Loss: 0.4588 Sum Loss: 1.9440
Epoch 1/1... Discriminator Loss: 1.5482... Generator Loss: 0.7019 Sum Loss: 2.2500
Epoch 1/1... Discriminator Loss: 1.5149... Generator Loss: 0.7515 Sum Loss: 2.2664
Epoch 1/1... Discriminator Loss: 1.4837... Generator Loss: 0.4908 Sum Loss: 1.9745
Epoch 1/1... Discriminator Loss: 1.4297... Generator Loss: 0.7261 Sum Loss: 2.1558
Epoch 1/1... Discriminator Loss: 1.4498... Generator Loss: 0.6348 Sum Loss: 2.0846
Epoch 1/1... Discriminator Loss: 1.4201... Generator Loss: 0.6783 Sum Loss: 2.0984
Epoch 1/1... Discriminator Loss: 1.4955... Generator Loss: 0.4727 Sum Loss: 1.9682
Epoch 1/1... Discriminator Loss: 1.4203... Generator Loss: 0.4935 Sum Loss: 1.9138
Epoch 1/1... Discriminator Loss: 1.6160... Generator Loss: 0.7019 Sum Loss: 2.3179
Epoch 1/1... Discriminator Loss: 1.4396... Generator Loss: 0.5343 Sum Loss: 1.9738
Epoch 1/1... Discriminator Loss: 1.4449... Generator Loss: 0.8992 Sum Loss: 2.3441
Epoch 1/1... Discriminator Loss: 1.4323... Generator Loss: 0.7267 Sum Loss: 2.1590
Epoch 1/1... Discriminator Loss: 1.3378... Generator Loss: 1.1156 Sum Loss: 2.4534
Epoch 1/1... Discriminator Loss: 1.4375... Generator Loss: 0.8933 Sum Loss: 2.3308
Epoch 1/1... Discriminator Loss: 1.3868... Generator Loss: 0.5536 Sum Loss: 1.9405
Epoch 1/1... Discriminator Loss: 1.4589... Generator Loss: 0.7313 Sum Loss: 2.1903
Epoch 1/1... Discriminator Loss: 1.4484... Generator Loss: 0.4958 Sum Loss: 1.9442
Epoch 1/1... Discriminator Loss: 1.4796... Generator Loss: 0.6809 Sum Loss: 2.1605
Epoch 1/1... Discriminator Loss: 1.4270... Generator Loss: 0.7258 Sum Loss: 2.1528
Epoch 1/1... Discriminator Loss: 1.4529... Generator Loss: 0.6587 Sum Loss: 2.1116
Epoch 1/1... Discriminator Loss: 1.4205... Generator Loss: 0.7086 Sum Loss: 2.1292
Epoch 1/1... Discriminator Loss: 1.4694... Generator Loss: 0.8538 Sum Loss: 2.3232
Epoch 1/1... Discriminator Loss: 1.4291... Generator Loss: 0.6458 Sum Loss: 2.0749
Epoch 1/1... Discriminator Loss: 1.4851... Generator Loss: 0.8519 Sum Loss: 2.3370
Epoch 1/1... Discriminator Loss: 1.3889... Generator Loss: 0.7044 Sum Loss: 2.0933
Epoch 1/1... Discriminator Loss: 1.4409... Generator Loss: 0.5995 Sum Loss: 2.0404
Epoch 1/1... Discriminator Loss: 1.4775... Generator Loss: 0.8975 Sum Loss: 2.3750
Epoch 1/1... Discriminator Loss: 1.3006... Generator Loss: 0.6832 Sum Loss: 1.9838
Epoch 1/1... Discriminator Loss: 1.3816... Generator Loss: 0.7669 Sum Loss: 2.1485
Epoch 1/1... Discriminator Loss: 1.3537... Generator Loss: 0.6951 Sum Loss: 2.0488
Epoch 1/1... Discriminator Loss: 1.3948... Generator Loss: 0.8079 Sum Loss: 2.2027
Epoch 1/1... Discriminator Loss: 1.3747... Generator Loss: 0.8027 Sum Loss: 2.1775
Epoch 1/1... Discriminator Loss: 1.5034... Generator Loss: 0.5301 Sum Loss: 2.0335
Epoch 1/1... Discriminator Loss: 1.4178... Generator Loss: 0.5337 Sum Loss: 1.9515
Epoch 1/1... Discriminator Loss: 1.3128... Generator Loss: 1.0167 Sum Loss: 2.3295
Epoch 1/1... Discriminator Loss: 1.4361... Generator Loss: 0.7136 Sum Loss: 2.1496
Epoch 1/1... Discriminator Loss: 1.5143... Generator Loss: 0.5074 Sum Loss: 2.0217
Epoch 1/1... Discriminator Loss: 1.5087... Generator Loss: 0.4910 Sum Loss: 1.9997
Epoch 1/1... Discriminator Loss: 1.3767... Generator Loss: 0.8470 Sum Loss: 2.2237
Epoch 1/1... Discriminator Loss: 1.4439... Generator Loss: 0.7118 Sum Loss: 2.1557
Epoch 1/1... Discriminator Loss: 1.4632... Generator Loss: 0.5889 Sum Loss: 2.0521
Epoch 1/1... Discriminator Loss: 1.3812... Generator Loss: 0.8313 Sum Loss: 2.2125
Epoch 1/1... Discriminator Loss: 1.4420... Generator Loss: 0.5781 Sum Loss: 2.0201
Epoch 1/1... Discriminator Loss: 1.3588... Generator Loss: 0.7357 Sum Loss: 2.0944
Epoch 1/1... Discriminator Loss: 1.2322... Generator Loss: 1.1548 Sum Loss: 2.3870
Epoch 1/1... Discriminator Loss: 1.5228... Generator Loss: 0.7480 Sum Loss: 2.2708
Epoch 1/1... Discriminator Loss: 1.3427... Generator Loss: 0.6784 Sum Loss: 2.0210
Epoch 1/1... Discriminator Loss: 1.4033... Generator Loss: 0.6037 Sum Loss: 2.0070
Epoch 1/1... Discriminator Loss: 1.2573... Generator Loss: 0.9794 Sum Loss: 2.2367
Epoch 1/1... Discriminator Loss: 1.3594... Generator Loss: 0.7360 Sum Loss: 2.0953
Epoch 1/1... Discriminator Loss: 1.2327... Generator Loss: 0.8843 Sum Loss: 2.1170
Epoch 1/1... Discriminator Loss: 1.4268... Generator Loss: 0.7009 Sum Loss: 2.1277
Epoch 1/1... Discriminator Loss: 1.3527... Generator Loss: 0.6014 Sum Loss: 1.9541
Epoch 1/1... Discriminator Loss: 1.4764... Generator Loss: 0.5451 Sum Loss: 2.0215
Epoch 1/1... Discriminator Loss: 0.9980... Generator Loss: 1.8284 Sum Loss: 2.8264
Epoch 1/1... Discriminator Loss: 1.4270... Generator Loss: 0.7418 Sum Loss: 2.1687
Epoch 1/1... Discriminator Loss: 1.4386... Generator Loss: 0.6218 Sum Loss: 2.0604
Epoch 1/1... Discriminator Loss: 1.0979... Generator Loss: 0.9384 Sum Loss: 2.0363
Epoch 1/1... Discriminator Loss: 1.3871... Generator Loss: 0.5999 Sum Loss: 1.9871
Epoch 1/1... Discriminator Loss: 1.4391... Generator Loss: 0.5705 Sum Loss: 2.0096
Epoch 1/1... Discriminator Loss: 1.5182... Generator Loss: 0.8087 Sum Loss: 2.3269
Epoch 1/1... Discriminator Loss: 1.3015... Generator Loss: 0.8479 Sum Loss: 2.1494
Epoch 1/1... Discriminator Loss: 1.4243... Generator Loss: 0.5802 Sum Loss: 2.0044
Epoch 1/1... Discriminator Loss: 1.1364... Generator Loss: 0.8855 Sum Loss: 2.0220
Epoch 1/1... Discriminator Loss: 1.3241... Generator Loss: 0.7018 Sum Loss: 2.0259
Epoch 1/1... Discriminator Loss: 1.3804... Generator Loss: 0.6680 Sum Loss: 2.0485
Epoch 1/1... Discriminator Loss: 1.3288... Generator Loss: 0.7060 Sum Loss: 2.0348
Epoch 1/1... Discriminator Loss: 1.2368... Generator Loss: 1.2044 Sum Loss: 2.4411
Epoch 1/1... Discriminator Loss: 1.4679... Generator Loss: 0.7523 Sum Loss: 2.2202
Epoch 1/1... Discriminator Loss: 1.5055... Generator Loss: 0.5667 Sum Loss: 2.0721
Epoch 1/1... Discriminator Loss: 1.3461... Generator Loss: 0.5597 Sum Loss: 1.9057
Epoch 1/1... Discriminator Loss: 1.3640... Generator Loss: 0.6356 Sum Loss: 1.9996
Epoch 1/1... Discriminator Loss: 1.9321... Generator Loss: 0.6659 Sum Loss: 2.5979
Epoch 1/1... Discriminator Loss: 1.1267... Generator Loss: 1.0113 Sum Loss: 2.1380
Epoch 1/1... Discriminator Loss: 1.3823... Generator Loss: 0.6502 Sum Loss: 2.0325
Epoch 1/1... Discriminator Loss: 1.2025... Generator Loss: 0.9769 Sum Loss: 2.1794
Epoch 1/1... Discriminator Loss: 1.4506... Generator Loss: 0.8331 Sum Loss: 2.2837
Epoch 1/1... Discriminator Loss: 1.4463... Generator Loss: 0.6167 Sum Loss: 2.0630
Epoch 1/1... Discriminator Loss: 1.8193... Generator Loss: 1.0729 Sum Loss: 2.8922
Epoch 1/1... Discriminator Loss: 1.4711... Generator Loss: 0.5210 Sum Loss: 1.9921
Epoch 1/1... Discriminator Loss: 1.4895... Generator Loss: 0.6674 Sum Loss: 2.1569
Epoch 1/1... Discriminator Loss: 1.3384... Generator Loss: 0.6326 Sum Loss: 1.9710
Epoch 1/1... Discriminator Loss: 1.3364... Generator Loss: 0.8888 Sum Loss: 2.2252
Epoch 1/1... Discriminator Loss: 1.3696... Generator Loss: 0.9064 Sum Loss: 2.2760
Epoch 1/1... Discriminator Loss: 1.6314... Generator Loss: 0.9586 Sum Loss: 2.5899
Epoch 1/1... Discriminator Loss: 1.4120... Generator Loss: 0.6895 Sum Loss: 2.1015
Epoch 1/1... Discriminator Loss: 1.3854... Generator Loss: 0.7620 Sum Loss: 2.1475
Epoch 1/1... Discriminator Loss: 1.3570... Generator Loss: 0.5798 Sum Loss: 1.9368
Epoch 1/1... Discriminator Loss: 1.4702... Generator Loss: 0.6558 Sum Loss: 2.1261
Epoch 1/1... Discriminator Loss: 1.3581... Generator Loss: 0.6030 Sum Loss: 1.9611
Epoch 1/1... Discriminator Loss: 1.4142... Generator Loss: 0.6403 Sum Loss: 2.0545
Epoch 1/1... Discriminator Loss: 1.5504... Generator Loss: 0.6256 Sum Loss: 2.1761
Epoch 1/1... Discriminator Loss: 1.4119... Generator Loss: 0.5313 Sum Loss: 1.9432
Epoch 1/1... Discriminator Loss: 1.3286... Generator Loss: 0.7050 Sum Loss: 2.0336
Epoch 1/1... Discriminator Loss: 1.3379... Generator Loss: 0.7095 Sum Loss: 2.0474
Epoch 1/1... Discriminator Loss: 1.3528... Generator Loss: 0.6594 Sum Loss: 2.0122
Epoch 1/1... Discriminator Loss: 1.4930... Generator Loss: 0.6048 Sum Loss: 2.0978
Epoch 1/1... Discriminator Loss: 1.3653... Generator Loss: 0.7636 Sum Loss: 2.1289
Epoch 1/1... Discriminator Loss: 1.4140... Generator Loss: 0.6159 Sum Loss: 2.0299
Epoch 1/1... Discriminator Loss: 1.4817... Generator Loss: 0.7522 Sum Loss: 2.2339
Epoch 1/1... Discriminator Loss: 1.3071... Generator Loss: 0.6165 Sum Loss: 1.9237
Epoch 1/1... Discriminator Loss: 1.4303... Generator Loss: 0.7150 Sum Loss: 2.1454
Epoch 1/1... Discriminator Loss: 1.3837... Generator Loss: 0.7186 Sum Loss: 2.1024
Epoch 1/1... Discriminator Loss: 1.2928... Generator Loss: 0.5387 Sum Loss: 1.8315
Epoch 1/1... Discriminator Loss: 0.9966... Generator Loss: 0.8125 Sum Loss: 1.8091
Epoch 1/1... Discriminator Loss: 1.4452... Generator Loss: 0.6625 Sum Loss: 2.1077
Epoch 1/1... Discriminator Loss: 1.2482... Generator Loss: 0.7102 Sum Loss: 1.9583
Epoch 1/1... Discriminator Loss: 1.3878... Generator Loss: 0.5239 Sum Loss: 1.9117
Epoch 1/1... Discriminator Loss: 1.4652... Generator Loss: 0.5973 Sum Loss: 2.0625
Epoch 1/1... Discriminator Loss: 1.4398... Generator Loss: 0.8009 Sum Loss: 2.2407
Epoch 1/1... Discriminator Loss: 1.2691... Generator Loss: 0.8076 Sum Loss: 2.0767
Epoch 1/1... Discriminator Loss: 1.3500... Generator Loss: 0.6109 Sum Loss: 1.9608
Epoch 1/1... Discriminator Loss: 1.4542... Generator Loss: 1.0269 Sum Loss: 2.4811
Epoch 1/1... Discriminator Loss: 1.2887... Generator Loss: 0.6290 Sum Loss: 1.9177
Epoch 1/1... Discriminator Loss: 1.4866... Generator Loss: 0.5519 Sum Loss: 2.0385
Epoch 1/1... Discriminator Loss: 1.4209... Generator Loss: 0.6309 Sum Loss: 2.0518
Epoch 1/1... Discriminator Loss: 1.3801... Generator Loss: 0.8977 Sum Loss: 2.2778
Epoch 1/1... Discriminator Loss: 1.3641... Generator Loss: 0.6917 Sum Loss: 2.0558
Epoch 1/1... Discriminator Loss: 1.4859... Generator Loss: 0.7950 Sum Loss: 2.2809
Epoch 1/1... Discriminator Loss: 1.3354... Generator Loss: 0.7816 Sum Loss: 2.1170
Epoch 1/1... Discriminator Loss: 1.4157... Generator Loss: 0.6664 Sum Loss: 2.0821
Epoch 1/1... Discriminator Loss: 1.3668... Generator Loss: 0.5846 Sum Loss: 1.9514
Epoch 1/1... Discriminator Loss: 1.3694... Generator Loss: 0.5668 Sum Loss: 1.9362
Epoch 1/1... Discriminator Loss: 1.3958... Generator Loss: 0.7788 Sum Loss: 2.1746
Epoch 1/1... Discriminator Loss: 1.3262... Generator Loss: 0.8500 Sum Loss: 2.1762
Epoch 1/1... Discriminator Loss: 1.5594... Generator Loss: 0.7750 Sum Loss: 2.3344
Epoch 1/1... Discriminator Loss: 1.3982... Generator Loss: 0.7072 Sum Loss: 2.1054
Epoch 1/1... Discriminator Loss: 1.3859... Generator Loss: 0.7535 Sum Loss: 2.1393
Epoch 1/1... Discriminator Loss: 1.3728... Generator Loss: 0.7271 Sum Loss: 2.0999
Epoch 1/1... Discriminator Loss: 1.1949... Generator Loss: 0.7516 Sum Loss: 1.9465
Epoch 1/1... Discriminator Loss: 1.3679... Generator Loss: 0.8143 Sum Loss: 2.1822
Epoch 1/1... Discriminator Loss: 1.2209... Generator Loss: 1.0030 Sum Loss: 2.2239
Epoch 1/1... Discriminator Loss: 1.3224... Generator Loss: 0.7060 Sum Loss: 2.0284
Epoch 1/1... Discriminator Loss: 1.3344... Generator Loss: 0.5969 Sum Loss: 1.9313
Epoch 1/1... Discriminator Loss: 1.2757... Generator Loss: 0.9929 Sum Loss: 2.2687
Epoch 1/1... Discriminator Loss: 1.2425... Generator Loss: 0.8814 Sum Loss: 2.1240
Epoch 1/1... Discriminator Loss: 1.3860... Generator Loss: 0.5256 Sum Loss: 1.9116
Epoch 1/1... Discriminator Loss: 1.5225... Generator Loss: 0.5028 Sum Loss: 2.0253
Epoch 1/1... Discriminator Loss: 1.3375... Generator Loss: 0.6650 Sum Loss: 2.0025
Epoch 1/1... Discriminator Loss: 1.5239... Generator Loss: 0.5041 Sum Loss: 2.0280
Epoch 1/1... Discriminator Loss: 1.6162... Generator Loss: 0.4088 Sum Loss: 2.0250
Epoch 1/1... Discriminator Loss: 1.2751... Generator Loss: 0.6601 Sum Loss: 1.9352
Epoch 1/1... Discriminator Loss: 1.3954... Generator Loss: 0.6233 Sum Loss: 2.0187
Epoch 1/1... Discriminator Loss: 1.3333... Generator Loss: 1.0376 Sum Loss: 2.3709
Epoch 1/1... Discriminator Loss: 1.3207... Generator Loss: 0.8640 Sum Loss: 2.1847
Epoch 1/1... Discriminator Loss: 1.2745... Generator Loss: 1.0114 Sum Loss: 2.2860
Epoch 1/1... Discriminator Loss: 1.3215... Generator Loss: 0.6505 Sum Loss: 1.9720
Epoch 1/1... Discriminator Loss: 1.5381... Generator Loss: 1.0320 Sum Loss: 2.5701
Epoch 1/1... Discriminator Loss: 1.3296... Generator Loss: 0.8148 Sum Loss: 2.1444
Epoch 1/1... Discriminator Loss: 1.7347... Generator Loss: 1.0974 Sum Loss: 2.8321
Epoch 1/1... Discriminator Loss: 1.1907... Generator Loss: 0.8109 Sum Loss: 2.0016
Epoch 1/1... Discriminator Loss: 1.4214... Generator Loss: 0.5335 Sum Loss: 1.9549
Epoch 1/1... Discriminator Loss: 1.3191... Generator Loss: 0.8055 Sum Loss: 2.1247
Epoch 1/1... Discriminator Loss: 1.4033... Generator Loss: 0.6240 Sum Loss: 2.0273
Epoch 1/1... Discriminator Loss: 1.2737... Generator Loss: 0.6425 Sum Loss: 1.9162
Epoch 1/1... Discriminator Loss: 1.3364... Generator Loss: 0.6393 Sum Loss: 1.9757
Epoch 1/1... Discriminator Loss: 1.4082... Generator Loss: 0.6837 Sum Loss: 2.0919
Epoch 1/1... Discriminator Loss: 1.1472... Generator Loss: 0.8673 Sum Loss: 2.0145
Epoch 1/1... Discriminator Loss: 1.3979... Generator Loss: 0.5635 Sum Loss: 1.9613
Epoch 1/1... Discriminator Loss: 1.3798... Generator Loss: 1.3262 Sum Loss: 2.7060
Epoch 1/1... Discriminator Loss: 1.4025... Generator Loss: 0.6362 Sum Loss: 2.0386
Epoch 1/1... Discriminator Loss: 1.4402... Generator Loss: 0.8029 Sum Loss: 2.2431
Epoch 1/1... Discriminator Loss: 1.4376... Generator Loss: 0.8101 Sum Loss: 2.2478
Epoch 1/1... Discriminator Loss: 1.5047... Generator Loss: 0.7471 Sum Loss: 2.2518
Epoch 1/1... Discriminator Loss: 1.3015... Generator Loss: 0.6266 Sum Loss: 1.9281
Epoch 1/1... Discriminator Loss: 1.4258... Generator Loss: 0.7149 Sum Loss: 2.1407
Epoch 1/1... Discriminator Loss: 1.3927... Generator Loss: 0.7374 Sum Loss: 2.1301
Epoch 1/1... Discriminator Loss: 1.4288... Generator Loss: 0.5873 Sum Loss: 2.0162
Epoch 1/1... Discriminator Loss: 1.2897... Generator Loss: 0.9649 Sum Loss: 2.2546
Epoch 1/1... Discriminator Loss: 1.2068... Generator Loss: 0.8627 Sum Loss: 2.0695
Epoch 1/1... Discriminator Loss: 1.6335... Generator Loss: 0.6696 Sum Loss: 2.3030
Epoch 1/1... Discriminator Loss: 1.0445... Generator Loss: 1.1891 Sum Loss: 2.2336
Epoch 1/1... Discriminator Loss: 1.4118... Generator Loss: 0.6014 Sum Loss: 2.0132
Epoch 1/1... Discriminator Loss: 1.3601... Generator Loss: 0.6256 Sum Loss: 1.9857
Epoch 1/1... Discriminator Loss: 1.4108... Generator Loss: 0.6721 Sum Loss: 2.0829
Epoch 1/1... Discriminator Loss: 1.3291... Generator Loss: 0.9115 Sum Loss: 2.2406
Epoch 1/1... Discriminator Loss: 1.4008... Generator Loss: 0.6423 Sum Loss: 2.0431
Epoch 1/1... Discriminator Loss: 2.0495... Generator Loss: 1.2457 Sum Loss: 3.2951
Epoch 1/1... Discriminator Loss: 1.3025... Generator Loss: 0.8776 Sum Loss: 2.1801
Epoch 1/1... Discriminator Loss: 0.9831... Generator Loss: 1.0375 Sum Loss: 2.0206
Epoch 1/1... Discriminator Loss: 1.3469... Generator Loss: 0.5529 Sum Loss: 1.8998
Epoch 1/1... Discriminator Loss: 1.3450... Generator Loss: 0.6604 Sum Loss: 2.0054
Epoch 1/1... Discriminator Loss: 1.3342... Generator Loss: 0.5241 Sum Loss: 1.8583
Epoch 1/1... Discriminator Loss: 1.4259... Generator Loss: 0.7706 Sum Loss: 2.1965
Epoch 1/1... Discriminator Loss: 1.2603... Generator Loss: 0.8804 Sum Loss: 2.1407
Epoch 1/1... Discriminator Loss: 1.3706... Generator Loss: 0.7997 Sum Loss: 2.1703
Epoch 1/1... Discriminator Loss: 1.4039... Generator Loss: 0.5189 Sum Loss: 1.9228
Epoch 1/1... Discriminator Loss: 1.2886... Generator Loss: 0.5438 Sum Loss: 1.8324
Epoch 1/1... Discriminator Loss: 1.3560... Generator Loss: 0.7652 Sum Loss: 2.1212

Submitting This Project

When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.